#ifndef __ITEXTURE_H__
#define __ITEXTURE_H__

#include "CTypes.h"
#include "CColor.h"
#include "ITextureCoordinates.h"

#define INCORRECT_TEXTURE	0xffffffff

typedef struct STextureCreationParams
{
	STextureCreationParams()
	{
		TransparentColor.r = 0.0;
		TransparentColor.g = 0.0;
		TransparentColor.b = 0.0;
		TransparentColor.a = 0.0;
		UseTransparentColor = false;
		UseOriginAndDest = false;
		Origin.X = 0.0;
		Origin.Y = 0.0;
		Dest.X = 0.0;
		Dest.Y = 0.0;
		UseLinear = false;
		Linear = false;
	}

	void Copy(STextureCreationParams *Other)
	{
		TransparentColor.r = Other->TransparentColor.r;
		TransparentColor.g = Other->TransparentColor.g;
		TransparentColor.b = Other->TransparentColor.b;
		TransparentColor.a = Other->TransparentColor.a;
		UseTransparentColor = Other->UseTransparentColor;
		UseOriginAndDest = Other->UseOriginAndDest;
		Origin.X = Other->Origin.X;
		Origin.Y = Other->Origin.Y;
		Dest.X = Other->Dest.X;
		Dest.Y = Other->Dest.Y;
		UseLinear = Other->UseLinear;
		Linear = Other->Linear;
	}

	CColor TransparentColor;
	bool UseTransparentColor;
	bool UseLinear;
	bool Linear;
	bool UseOriginAndDest;
	vector2dvpos Origin;
	vector2dvpos Dest;
} STextureCreationParams;

class ITexture : public ITextureCoordinates
{
public:
	ITexture():ITextureCoordinates() {}
	virtual ~ITexture()		{}

	virtual u32 GetTextureID()			= 0;
	virtual void ActivateTexture()		= 0;
	virtual void DeActivateTexture()	= 0;
	virtual vector2du32 &GetLen()		= 0;
};

#endif
